package win.larryzeal.util;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * 
 * @author Larry
 *
 */
public class StringUtil {

	/**
	 * 用匹配正则的每个子字符串作为key，用""作为value，放入给定的map中。
	 * 这个存在的原因是，可能需要并发执行，然后存入同一个map中。不并发时也可以用，但不如直接使用
	 * 
	 * @param content
	 * @param regex
	 * @param map
	 * @return
	 */
	public static Map<String, String> getAllMatchingStringKeyedMap(String content, String regex, Map<String, String> map) {
		Pattern pattern = Pattern.compile(regex);
		Matcher m = pattern.matcher(content);
		while (m.find()) {
			map.put(m.group(), "");
		}

		return map;
	}

	/**
	 * 无序、不可重复。
	 * 
	 * @param content
	 * @param regex
	 * @return
	 */
	public static Set<String> getAllMatchingStringSet(String content, String regex) {
		Set<String> set = new HashSet<>();
		Pattern pattern = Pattern.compile(regex);
		Matcher m = pattern.matcher(content);
		while (m.find()) {
			set.add(m.group());
		}

		return set;
	}

	/**
	 * 有序、可重复。
	 * 
	 * @param content
	 * @param regex
	 * @return
	 */
	public static List<String> getAllMatchingStringList(String content, String regex) {
		List<String> list = new ArrayList<>();
		Pattern pattern = Pattern.compile(regex);
		Matcher m = pattern.matcher(content);
		while (m.find()) {
			list.add(m.group());
		}

		return list;
	}
}
